package com.example.demo2;

import java.util.ArrayList;
import java.util.List;

/**
 * Directory表示文件夹
 */
public class Directory extends Entry {

    /**
     * 文件夹的名称
     */
    private String name;

    /**
     * 文件夹与文件的集合
     */
    private List<Entry> directory = new ArrayList<>();

    public Directory(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }

    /**
     * 获取文件大小
     * 1.如果entry对象是 file类型,则调用getSize方法获取文件大小
     * 2.如果entry对象是 Directory类型,会继续调用子文件夹的 getSize方法,形成递归调用
     *
     * @return
     */
    @Override
    public int getSize() {
        int size = 0;
        for (Entry entry : directory) {
            size += entry.getSize();
        }
        return size;
    }

    @Override
    public Entry add(Entry entry) {
        directory.add(entry);
        return this;
    }

    @Override
    public void printList(String prefix) {
        System.out.println("/" + this);
        for (Entry e : directory) {
            e.printList("/" + name);
        }
    }


}
